<html>
    <head>
        <title>授权 Authorize</title>
    </head>
    <body>
        <script>
             /*
                    授权用于检查是否允许用户在应用程序中执行某些操作。

                    ABP通过添加"权限"作为"自动策略"来扩展 asp.net core 核心授权，并允许授权系统可在应用服务中使用。

                    因此，所有所有ASP.NET核心授权功能和留档在基于ABP的应用程序中都是有效的。
                */


                // 一、Authorize 特性 (授权特性)

                        /*
                            Asp.net core 定义了  Authorize 属性，该属性可用于控制器方法（Action）、控制器(Controller)或者 页面。
                            ABP同时也允许你对"应用程序服务"使用Authorize
                        */
                        /*
                                    using System;
                                    using System.Collections.Generic;
                                    using System.Threading.Tasks;
                                    using Microsoft.AspNetCore.Authorization;
                                    using Volo.Abp.Application.Services;

                                    namespace Acme.BookStore
                                    {
                                        [Authorize] //控制器级别授权
                                        public class AuthorAppService : ApplicationService, IAuthorAppService
                                        {
                                            public Task<List<AuthorDto>> GetListAsync()
                                            {
                                                ...
                                            }

                                            [AllowAnonymous]  // action级别授权 允许匿名用户访问该方法
                                            public Task<AuthorDto> GetAsync(Guid id)
                                            {
                                                ...
                                            }

                                            [Authorize("BookStore_Author_Create")] // action级别授权 允许拥有"BookStore_Author_Create"权限的用户访问该方法
                                            public Task CreateAsync(CreateAuthorDto input)
                                            {
                                                ...
                                            }
                                        }
                                    }


                                Aothorize 特性强制用户登录应用程序以后才可使用 AuthorAppService方法。 因此，GetListAsync方法仅对经过身份验证的用户可用。

                                AllowAnonymous 特性，抑制身份验证。因此，GetAsync方法可供所有人使用，包括未经授权的用户

                                [Authorize("BookStore_Author_Create")]定义了一个策略（请参阅基于策略的授权），该策略被检查以授权当前用户
                        */


                        

        </script>
    </body>
</html>